package be.ipl.pigolo.testUcc;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNull;

import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.junit.Before;
import org.junit.Test;

import be.ipl.pigolo.domaine.Fermier;
import be.ipl.pigolo.domaine.Partie;
import be.ipl.pigolo.domaine.PartieFermier;
import be.ipl.pigolo.usecases.GestionPartie;

public class TestListerLesParticipants {

	private static GestionPartie gp;
	private List<PartieFermier> listePartie;

	@Before
	public void setUp() throws Exception {
		try {
			Context jndi = new InitialContext();
			gp = (GestionPartie) jndi
					.lookup("ejb:PigoloEAR/PigoloEJB/GestionPartieImpl!be.ipl.pigolo.usecases.GestionPartie");
		} catch (NamingException e) {
			e.printStackTrace();
		}
		
	}

	@Test
	public void testListerLesParticipants_PartieVide(){
		assertNull(this.gp.listerLesParticipants(""));
	}
	
	@Test
	public void testListerLesParticipants_PartieNonEnDB(){
		assertNull(this.gp.listerLesParticipants("partie16"));
	}
	
	@Test
	public void testListerLesParticipants_Partie_Fermier(){
		this.gp.creerPartie("partie17",5);
		listePartie = this.gp.listerLesParticipants("partie17");
		assertEquals(0,listePartie.size());
	}
	
	@Test
	public void testListerLesParticipants_FermiersPresent(){
		this.gp.inscrire("joueur5", "azerty");
		this.gp.connexion("joueur5", "azerty");
		this.gp.inscrire("joueur6", "azerty1");
		this.gp.connexion("joueur6", "azerty1");
		this.gp.creerPartie("partie18",5);
		this.gp.rejoindrePartie("partie18", "joueur5");
		this.gp.rejoindrePartie("partie18", "joueur6");
		listePartie = this.gp.listerLesParticipants("partie18");
		assertEquals(2,listePartie.size());
	}
}	